WinDBG 사용법
WinDBG에서 자주 사용했던 명령어들을 정리함.
심볼
SRV*C:\windbgsymbols*http://msdl.microsoft.com/download/symbols
꼭 추가해주자.
레이아웃
나는 이렇게 레이아웃을 설정하고 사용했음. 심볼을 추가하고 Layout을 설정한 후 Workspace를 저장해 두자.
명령어
기본사항
- 숫자는 기본적으로 16진수. 0x 0n 0t 접두어 사용 가능.
.formats #
: 포멧 확인? #수식
: 수식 연산$
,@
: 레지스터 접두사. 전자는 심볼로의 인식을 먼저 시도한다.
Breakpoints
bp #주솟값
: breakpoint, 계속 진행하려면g
g #주솟값
: 주소값 나올 때까지 실행bl
: breakpoint listbd #번호
: breakpoint disablebc #번호
: breakpoint clear
Stepping
t
: Step-in/tracep
: Step-overgu
: Step-out (go up) => ret 실행 후 멈춤tt
: trace to next return => t 수행하다 ret만나면 멈춤pt
: step to next return => p 수행하다 ret 만나면 멈춤
Register
r
u EIP L3
: EIP주소의 명령어 3개 보기k
: Call Stack
Memory View
db
: byte (1)dw
: words (2)dd
: dwords (4)dq
: qwords (8)dyb
: bitsda
: null로 끝나는 ascii 문자열du
: null로 끝나는 unicode 문자열d*
: 최근에 사용한 d 명령어dg
: display sectordt #구조체이름
: 구조체 정보
Memory Edit & Search
e[d|w|b] #주솟값 [#새로운_값_배열]
s -[d|w|b|a|u] #시작주소 L?#찾을요소갯수 #찾을값
: 주소 + 단위 * 찾을요소갯수 까지 검색
Pointer
poi(#주솟값)
Structure
!teb
/$teb
!peb
/$peb
!dlls
!exchain
!vadump
: 메모리 페이지 리스트와 정보!lmi #모듈이름
: 모듈 정보dt /r#n #구조체이름
: 구조체 정보를 n만큼의 level의 tree로 보여줌. ex)dt /r1 _PEB 0x003a4000